
********************************************************************************
********************************************************************************
* REPLIKATIONSMATERIAL FÜR
* Rudolph, L., Bränuninger, T., & Menzner, J.
* Das Potential offener Listen für die Wahl von Frauen zum Bundestag. Ergebnisse eines Survey-Experiments .
* Zur Veröffentlichung akzeptiert in: Politische Vierteljahresschrift. 
*
* Version 1.0, geschrieben von Jan Menzner am 2022-05-25  
********************************************************************************
********************************************************************************

********************************************************************************
********************************************************************************
* Diese Do-File repliziert the Ergebnisse präsentiert in:

/*
Abbildung 2: Frauenanteil unter gewählten Kandidat*innen in offener Listenwahl
Abbildung 3: Frauenanteil unter gewählten Kandidat*innen in offener Listenwahl,
nach gewählter Partei und Wähler*innen-Geschlecht
Abbildung 4: Abweichung des gewählten Kandidatinnen-Anteils vom Erwartungswert in offener Listenwahl, nach experimentell variierter Zusammensetzung der Liste
Abbildung 5: Logit-Koeffizient des Kandidat*innengeschlechts nach Partei und
Wähler*innengeschlech

Tabelle 2: Erklärungsfaktoren der Kandidat*innen-Wahl bei offener Liste

Abbildung A.1: Vorhergesagte Wahrscheinlichkeit einer Präferenz für offene Listen nach Parteien und Gleichstellungs-Salient
Abbildung A.4: Vorhergesagte Wahrscheinlichkeit einer Präferenz für offene Listen nach Parteien und Wähler*innen Geschlecht
Abbildung A.5: Logit-Koeffizienten des Kandidat*innengeschlechts
Abbildung A.6: Post Hoc Power-Analyse für Abb.2
Abbildung A.7: Post Hoc Power-Analyse für Abb.3
Abbildung A.8: Post Hoc Power-Analyse für Abb.4

Tabelle A.1: Wahlwahrscheinlichkeit Parteien in geschlossener Liste
Tabelle A.2: Bevorzugter Listentyp
*/
********************************************************************************
********************************************************************************

********************************************************************************
********************************************************************************
* Set Up

* Diese Packages müssen eventuell vor dem Durchlaufen lassen installiert werden:
/*
ssc install grstyle, replace    // grstyle Package von Ben Jann
ssc install colrspace, replace  // colrspace Package von Ben Jann
ssc install coefplot, replace   // coefplot package von Ben Jann
ssc install estout, replace     // estout package von Ben Jann
ssc install tabout, replace  // tabout package von Ian Watson
ssc install mplotoffset, replace // mplotoffset package von Nick Winter
net install grc1leg.pkg, replace // grc1leg package von Vince Wiggins
*/

* Default Abbildungs-Einstellungen
grstyle init
grstyle set plain, horizontal grid
grstyle set color Dark2
grstyle set legend, nobox
grstyle set symbol

/*
Benötigte Datensätze:
- Daten/data_Lightspeed.csv --> erstellt daraus: data/analysis.dta
- Daten/abb3_data.xlsx
- Daten/abb4_data.xlsx
- Daten/linearkombinationen.xlsx
*/

/*
Weitere benötigte Dateien zur Bearbeitung der finalen Abbildungen:
- Daten/edit/Abb_A6.grec
- Daten/edit/Abb_A7_1.grec
- Daten/edit/Abb_A7_2.grec
- Daten/edit/Abb_A7_3.grec
- Daten/edit/Abb_A7_4.grec
- Daten/edit/Abb_A7_5.grec
- Daten/edit/Abb_A7_6.grec
- Daten/edit/Abb_A7_gesamt.grec
- Daten/edit/Abb_A8_1.grec
- Daten/edit/Abb_A8_2.grec
- Daten/edit/Abb_A8_3.grec
*/

********************************************************************************
********************************************************************************
* Daten importieren 

use Daten/analysis, clear // Oder entsprechenden eigenen Pfad auswählen

********************************************************************************
********************************************************************************
************************** BESTANDSAUFNAHME DATENSATZ **************************
********************************************************************************
********************************************************************************

/*
**********************
VOTER				= Wähler*innen-ID
SEX					= Wähler*innen-Geschlecht (0 = Wähler ; 1 = Wählerin)
SCALOMETER			= Skalometer-Bewertung für Parteien (0 = Niedrigste ; 10 = Höchste)
SALIENCE_GENDEREQ.	= Dummy, ob Gleichberechtigung in Top 3 wichtigsten Themen ist
PREFERED_LIST		= Bevorzugter Listentyp (1 = Offen ; 0 = Geschlossen)
**********************
SEX_CAND			= Kandidierenden-Geschlecht (0 = Kandidat ; 1 = Kandidatin)
FEMALESINPARTY   	= Anzahl von Kandidatinnen innerhalb einer Partei
CAND_POSITION		= Intra-party Position der Kandidierenden (1.-4.)
PARTY_POSITION		= Partei-Position auf Wahlzettel (1.-6.)
PARTY				= Kandidierenden-Partei 
                      (1 = AFD ; 2 = Linke ; 3 = FDP ; 4 = Grüne ; 5 = SPD ; 6 = Union)
**********************
FF					= Dummy, ob Kandidatin & Wählerin weiblich sind
MM					= Dummy, ob Kandidat & Wähler männlich sind
SF					= Dummy, ob Wähler*in Gleichberechtigung für salient hält und Kandidatin wählt
GENDERMATCH			= Interaktion aus Wähler*innen/ Kandidierenden-Geschlecht 
                      0 "F/F" 1 "F/M" 2 "M/M" 3 "M/F" (1. Buchstabe = Wählende)
**********************
OPEN_VOTE			= Dummy, Wahlentscheidung in offener Liste (0 = Nein ; 1 = Ja)
CLOSED_VOTE			= Dummy, Wahlentscheidung in geschlossener Liste (0 = Nein ; 1 = Ja)
PARTY_OPEN			= Partei gewählt in offener Liste
                      (1 = AFD ; 2 = Linke ; 3 = FDP ; 4 = Grüne ; 5 = SPD ; 6 = Union)
PARTY_CLOSED		= Partei gewählt in geschlossener Liste
                      (1 = AFD ; 2 = Linke ; 3 = FDP ; 4 = Grüne ; 5 = SPD ; 6 = Union)
**********************
TREATMENT			= 1 = T11; 2 = T12; 3 = T21; 4 = T22; 5 = T3
**********************
*/

*_______________________________________________________________________________
********************************************************************************
* Abbildungen im Hauptteil des Papers
*_______________________________________________________________________________

********************************************************************************
* Abbildung 2: Frauenanteil unter gewählten Kandidat*innen in offener Listenwahl
*______

* Daten laden & einschränken
use Daten/analysis, clear
keep if open_vote==1 & treatment==2 // Wählt nur die Beobachtungen die die getroffene Wahlentscheidung notieren - für Respondents die zuerst eine offene Liste ohne Policy-Cues gezeigt bekommen haben. Die gleiche Einschränkung trifft auf die meisten weiteren Analysen zu. 

* Prozente berechnen
eststo clear
mean sex_cand if sex==1
est sto f
mean sex_cand if sex==0
est sto m

* Plot erstellen
coefplot (m, bcolor("0 0 225*2")) (f, bcolor("255 0 0*2")), vertical recast(bar) barwidth(0.2) legend(off) ///
     levels(95 90) ciopts(recast(rcap rcap))citop citype(logit) format(%9.2f) ///
	yline(0.5, lcolor(gs7) lwidth(medium) lpattern(dash)) ///
	xlabel( 0.83 "Wähler" 1.17 "Wählerinnen") ///
	ylabel( 0 "0" 0.1 "10" 0.2 "20" 0.3 "30" 0.4 "40" 0.5 "50" 0.6 "60") ytitle("Prozent") 
	
* Plot bearbeiten
*** 90% KIs Wähler
gr_edit .plotregion1.plot3.style.editstyle area(linestyle(width(thick))) editcopy
gr_edit .plotregion1.plot3.style.editstyle area(linestyle(color(black))) editcopy
gr_edit .plotregion1.plot3.style.editstyle marker(size(zero)) editcopy
*** 90% KIs Wählerinnen
gr_edit .plotregion1.plot6.style.editstyle area(linestyle(width(thick))) editcopy
gr_edit .plotregion1.plot6.style.editstyle area(linestyle(color(black))) editcopy
gr_edit .plotregion1.plot6.style.editstyle marker(size(zero)) editcopy
*** 95% KIs Wähler
gr_edit .plotregion1.plot2.style.editstyle area(linestyle(color(black))) editcopy
gr_edit .plotregion1.plot2.style.editstyle marker(size(large)) editcopy
*** 95% KIs Wählerinnen
gr_edit .plotregion1.plot5.style.editstyle area(linestyle(color(black))) editcopy
gr_edit .plotregion1.plot5.style.editstyle marker(size(large)) editcopy
*** Numerisches Label Wähler
gr_edit .plotregion1.AddTextBox added_text editor .5319 .833
gr_edit .plotregion1.added_text_new = 1
gr_edit .plotregion1.added_text_rec = 1
gr_edit .plotregion1.added_text[1].style.editstyle  angle(default) size( sztype(relative) val(3.4722) allow_pct(1)) color(black) horizontal(left) vertical(middle) margin( gleft( sztype(relative) val(0) allow_pct(1)) gright( sztype(relative) val(0) allow_pct(1)) gtop( sztype(relative) val(0) allow_pct(1)) gbottom( sztype(relative) val(0) allow_pct(1))) linegap( sztype(relative) val(0) allow_pct(1)) drawbox(no) boxmargin( gleft( sztype(relative) val(0) allow_pct(1)) gright( sztype(relative) val(0) allow_pct(1)) gtop( sztype(relative) val(0) allow_pct(1)) gbottom( sztype(relative) val(0) allow_pct(1))) fillcolor(bluishgray) linestyle( width( sztype(relative) val(.2) allow_pct(1)) color(black) pattern(solid) align(inside)) box_alignment(nort) editcopy
gr_edit .plotregion1.added_text[1].text.Arrpush 48.69
gr_edit .plotregion1.added_text[1].style.editstyle size(small) editcopy
*** Numerisches Label Wählerinnen
gr_edit .plotregion1.AddTextBox added_text editor .5963 1.167
gr_edit .plotregion1.added_text_new = 2
gr_edit .plotregion1.added_text_rec = 2
gr_edit .plotregion1.added_text[2].style.editstyle  angle(default) size( sztype(relative) val(3.4722) allow_pct(1)) color(black) horizontal(left) vertical(middle) margin( gleft( sztype(relative) val(0) allow_pct(1)) gright( sztype(relative) val(0) allow_pct(1)) gtop( sztype(relative) val(0) allow_pct(1)) gbottom( sztype(relative) val(0) allow_pct(1))) linegap( sztype(relative) val(0) allow_pct(1)) drawbox(no) boxmargin( gleft( sztype(relative) val(0) allow_pct(1)) gright( sztype(relative) val(0) allow_pct(1)) gtop( sztype(relative) val(0) allow_pct(1)) gbottom( sztype(relative) val(0) allow_pct(1))) fillcolor(bluishgray) linestyle( width( sztype(relative) val(.2) allow_pct(1)) color(black) pattern(solid) align(inside)) box_alignment(north) editcopy
gr_edit .plotregion1.added_text[2].text.Arrpush 55.13
gr_edit .plotregion1.added_text[2].style.editstyle size(small) editcopy

* Speichern
graph export Abbildungen/Abb2.eps, replace

********************************************************************************
* Abbildung 3: Frauenanteil unter gewählten Kandidat*innen in offener Listenwahl, nach gewählter Partei und Wähler*innen-Geschlecht
*______

* Daten laden
import excel Daten/abb3_data, clear firstrow
/* Barplot-Daten stammen von folgendem Code und wurden per Hand in Excel übertragen:

* Daten laden & einschränken
use Daten/analysis, clear
keep if open_vote==1 & treatment==2

* Prozente berechnen nach Wähler*innen-Geschlecht 
by sex party, sort:prtest sex_cand==0.5
by party, sort:prtest sex_cand==0.5

* Prozente berechnen nach Wähler*innen-Geschlecht und Partei-Wahl
by sex party, sort:prtest sex_cand==0.5, level(90)
by party, sort:prtest sex_cand==0.5, level(90)
*/

* Daten verarbeiten, um sie zu plotten
encode group, generate(group2)
drop group
rename group2 group

gen labels = round(share, 0.1)
generate plots = group if party == "Linke"
replace plots = group+4 if party == "B'90/Grünen"
replace plots = group+8 if party == "SPD"
replace plots = group+12 if party == "Union"
replace plots = group+16 if party == "FDP"
replace plots = group+20 if party == "AfD"

* Plot erstellen
twoway ///
(bar share plots if group==1, bcolor(gs8)) ///
(bar share plots if group==2, bcolor("0 0 225*2")) ///
(bar share plots if group==3, bcolor("255 0 0*2")) ///
(rcap upci lowci plots, lcolor(black)) ///
(rbar up90ci low90ci plots, bcolor(black) barwidth(0.15)) ///
(scatter upci plots, msymbol(none) mlabel(labels) ///
mlabcolor(black) mlabposition(12) mlabsize(vsmall)), ///
legend(row(1) order(1 "Gesamt" 2 "Wähler" 3 "Wählerinnen")) ///
xlabel( 2 "Linke" 6 "B'90/Grünen" 10 "SPD" 14 "Union" 18 "FDP" 22 "AfD", noticks) ///
ylabel( 0 "0" 10 "10" 20 "20" 30 "30" 40 "40" 50 "50" 60 "60" 70 "70") ///
xtitle("")ytitle("Prozent") ///
yline(50, lcolor(gs7) lwidth(medium) lpattern(dash))

* Speichern
graph export Abbildungen/Abb3.eps, replace

********************************************************************************
* Abbildung 4: Abweichung des gewählten Kandidatinnen-Anteils vom Erwartungswert in offener Listenwahl, nach experimentell variierter Zusammensetzung der Liste
*______

* Daten laden
import excel Daten/abb4_data, clear firstrow

/* Frauenanteils-Daten stammen von folgendem Code und wurden per Hand in Excel übertragen:

* Daten laden & einschränken
use Daten/analysis, clear
keep if open_vote==1 & treatment==2

* Prozente berechnen nach Listenzusammensetzung 
eststo clear
mean sex_cand, over(femalesinparty) level(90)
mean sex_cand, over(femalesinparty) level(95)
tab(femalesinparty)

*/

* Abweichung zum Erwartungswert berechnen
foreach x in mean lower90 upper90 lower95 upper95{
	replace `x' = `x' - 0.25 if females=="1/4"
	replace `x' = `x' - 0.5 if females=="2/4"
	replace `x' = `x' - 0.75 if females=="3/4"
}

* Variable erzeugen, um Daten auf X-Achse zu plotten
egen x = fill(0.25 0.5 0.75)

* Plot erstellen
twoway  ///
(rbar upper90 lower90 x, barwidth(0.004)) ///
(rcap upper95 lower95 x) ///
(scatter mean x), ///
xlabel(0.25 "1/4 Frauen" 0.5 "2/4 Frauen" 0.75 "3/4 Frauen", noticks nogrid) ///
ylabel(-.1 "-10" -.05 "-5" 0 "0" 0.05 "5" 0.1 "10" 0.15 "15" 0.2 "20")  ///
xtitle("Frauenanteil auf Partei-Liste") ytitle("Abweichung vom Erwartungswert (in %-Punkten)") ///
legend(off) xscale(range(0.2 0.8)) ///
yline(0, lcolor(gs7) lwidth(medium) lpattern(dash))


* Plot bearbeiten
*** Marker anpassen
gr_edit .legend.plotregion1.key[3].view.style.editstyle marker(size(medlarge)) editcopy
gr_edit .legend.plotregion1.key[3].view.style.editstyle marker(symbol(diamond)) editcopy
gr_edit .legend.plotregion1.key[3].view.style.editstyle marker(linestyle(color(gs1))) editcopy
gr_edit .legend.plotregion1.key[3].view.style.editstyle marker(fillcolor(gs1)) editcopy
*** KIs anpassen
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(gs1))) editcopy
gr_edit .plotregion1.plot2.style.editstyle area(linestyle(color(gs1))) editcopy

*Speichern
graph export Abbildungen/Abb4.eps, replace

********************************************************************************
* Abbildung 5: Logit-Koeffizient des Kandidat*innengeschlechts nach Partei und Wähler*innengeschlechts
*______

import excel using Daten/linearkombinationen.xlsx, clear firstrow

/* Der Teil der Linearkombinations-Daten, der für diese Abbildung genutzt wird stammt von folgendem Code und wurde per Hand in Excel übertragen:

* Daten laden
use Daten/analysis, clear

* Modell 5 aus Tabelle 2 rechnen 
est clear 
eststo: clogit open_vote ib0.sex_cand##ib3.party i.FF##ib3.party ib4.cand_position ib2.femalesinparty scalometer if treatment==2, group(voter) vce(cluster voter) // M5

* Linearkombinationen der Logit-Koeffizienten nach Wähler*innen- und Kandidierenden-Geschlecht sowie Partei-Wahl berechnen:

*** mit 95 % Konfidenzintervallen
foreach x in 1 2 3 4 5 6 {
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.party + 1.FF + 1.FF#`x'.party // Frauen von Frauen gewählt
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.party // Frauen von Männern gewählt
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.party + 1.FF + 1.FF#`x'.party - 1.sex_cand - 1.sex_cand#`x'.party // Frauen von Frauen gewählt  - Frauen von Männer gewählt = Differenz
}
*** mit 90 % Konfidenzintervallen
foreach x in 1 2 3 4 5 6 {
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.party + 1.FF + 1.FF#`x'.party, level(90)
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.party, level(90)
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.party + 1.FF + 1.FF#`x'.party - 1.sex_cand - 1.sex_cand#`x'.party, level(90)
}

*/

* Daten auf Linearkombinationen aus Modell 5 beschränken
keep if model==5

* Variable erzeugen, um Daten auf X-Achse zu plotten
egen x = seq(), f(1) t(6) b(3)
replace x = x - 0.15 if sex == "Female"
replace x = x + 0.15 if sex == "Diff"
 
* Plot erstellen
twoway (scatter coef x if sex == "Female")  ///
(scatter coef x if sex == "Male")  ///
(scatter coef x if sex == "Diff") ///
(rcap upper lower x if sex == "Female") ///
(rcap upper lower x if sex == "Male")   ///
(rcap upper lower x if sex == "Diff")   ///
(rbar upper90 lower90 x if sex == "Female", bcolor(black) barwidth(0.025) ) ///
(rbar upper90 lower90 x if sex == "Male", bcolor(gs11) barwidth(0.025) )   ///
(rbar upper90 lower90 x if sex == "Diff", bcolor(gs8) barwidth(0.025) ),  ///
xlabel(1 "Linke" 2 "B'90/Grünen" 3 "SPD" 4 "Union" 5 "FDP" 6 "AfD", labsize(small)) xsc(r(1 6.5)) ///
ylabel(-1.5 "-1.5" -1 "-1" -0.5 "-0.5" 0 "0" 0.5 "0.5" 1 "1")  ///
xtitle("Gewählte Partei") ytitle("") ///
legend( order(1 "Wählerinnen" 2 "Wähler" 3 "Differenz: Wählerinnen - Wähler") row(1)) ///
yline(0, lcolor(gs7) lwidth(medium) lpattern(dash))

* Plot bearbeiten
*** Marker Wählerinnen
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(size(medsmall)) editcopy
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(symbol(circle)) editcopy
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(fillcolor(black)) editcopy
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(linestyle(color(black))) editcopy
*** KIs Wählerinnen
gr_edit .plotregion1.plot4.style.editstyle area(linestyle(color(black))) editcopy
gr_edit .plotregion1.plot7.style.editstyle area(linestyle(color(black))) editcopy
*** Marker Wähler
gr_edit .legend.plotregion1.key[2].view.style.editstyle marker(size(medsmall)) editcopy
gr_edit .legend.plotregion1.key[2].view.style.editstyle marker(fillcolor(gs11)) editcopy
gr_edit .legend.plotregion1.key[2].view.style.editstyle marker(linestyle(color(gs11))) editcopy
gr_edit .plotregion1.plot5.style.editstyle area(linestyle(color(gs11))) editcopy
*** KIs Wähler
gr_edit .plotregion1.plot8.style.editstyle area(linestyle(color(gs11))) editcopy
gr_edit .plotregion1.plot8.style.editstyle area(shadestyle(intensity(inten100))) editcopy
*** Marker Differenz
gr_edit .legend.plotregion1.key[3].view.style.editstyle marker(size(medsmall)) editcopy
gr_edit .legend.plotregion1.key[3].view.style.editstyle marker(linestyle(color(gs8))) editcopy
gr_edit .legend.plotregion1.key[3].view.style.editstyle marker(symbol(triangle)) editcopy
gr_edit .plotregion1.plot6.style.editstyle area(linestyle(color(gs8))) editcopy
*** KIs Differenz
gr_edit .plotregion1.plot9.style.editstyle area(linestyle(color(gs8))) editcopy
gr_edit .plotregion1.plot9.style.editstyle area(shadestyle(intensity(inten100))) editcopy

* Speichern
graph export Abbildungen/Abb5.eps, replace

*_______________________________________________________________________________
********************************************************************************
* Tabellen im Hauptteil des Papers
*_______________________________________________________________________________


********************************************************************************
* Tabelle 2: Erklärungsfaktoren der Kandidat*innen-Wahl bei offener Liste
*______

* Daten Laden 
use Daten/analysis, clear

* Conditional Logit Modelle 1 - 5 berechnen
est clear

eststo: clogit open_vote ib0.sex_cand i.FF ib3.party ib4.cand_position ib2.femalesinparty scalometer if treatment==2, group(voter) vce(cluster voter) // M1
eststo: clogit open_vote ib0.sex_cand##ib3.party ib4.cand_position ib2.femalesinparty scalometer if treatment==2, group(voter) vce(cluster voter) // M2
eststo: clogit open_vote ib0.sex_cand i.SF ib3.party ib4.cand_position ib2.femalesinparty scalometer if treatment==2, group(voter) vce(cluster voter) // M3
eststo: clogit open_vote ib0.sex_cand##ib2.femalesinparty ib3.party ib4.cand_position scalometer if treatment==2, group(voter) vce(cluster voter) // M4
eststo: clogit open_vote ib0.sex_cand##ib3.party i.FF##ib3.party ib4.cand_position ib2.femalesinparty scalometer if treatment==2, group(voter) vce(cluster voter) // M5

* Value-Labels für Tabelle anpassen (ergeben nur in dieser Tabelle Sinn)
label define FF_tabelle 0 "Kandidatin $\times$ Wähler" 1 "Kandidatin $\times$ Wählerin"
lab val FF FF_tabelle

label define SF_tabelle 1 "Kandidatin $\times$ Salient" 0 "Kandidatin $\times$ Nicht-Salient"
lab val SF SF_tabelle

* Gespeicherte Berechnungen als Tabelle exportieren
esttab using "Tabellen/Tab2.tex", replace se nonumber ///
mtitles("Modell 1" "Modell 2" "Modell 3" "Modell 4" "Modell 5") label nonotes eqlabel(none) wide ///
stats(N N_clust r2_p, labels("N" "Befragte" "Pseudo R$^2$")) ///
dropped("(Ref.)") ///
order(1.sex_cand 0.sex_cand 1.FF 0.FF 1.sex_cand#1.party 1.sex_cand#2.party 1.sex_cand#3.party 1.sex_cand#4.party 1.sex_cand#5.party 1.sex_cand#6.party 1.SF 0.SF 1.sex_cand#1.femalesinparty 1.sex_cand#2.femalesinparty 1.sex_cand#3.femalesinparty 1.FF#1.party 1.FF#2.party 1.FF#3.party 1.FF#4.party 1.FF#5.party 1.FF#6.party 1.cand_position 2.cand_position 3.cand_position 4.cand_position 1.femalesinparty 2.femalesinparty 3.femalesinparty scalometer 1.party) ///
drop(0.sex_cand#1.party 0.sex_cand#2.party 0.sex_cand#3.party 0.sex_cand#4.party 0.sex_cand#5.party 0.sex_cand#6.party 0.sex_cand#1.femalesinparty 0.sex_cand#2.femalesinparty 0.sex_cand#3.femalesinparty 0.FF#1.party 0.FF#2.party 0.FF#3.party 0.FF#4.party 0.FF#5.party 0.FF#6.party) ///
refcat(1.sex_cand "\textbf{Kandidierenden-Geschlecht}" 1.FF "\makecell{ \\ \textbf{Interaktionsterme}}" 1.sex_cand#1.party " " 1.SF " " 1.sex_cand#1.femalesinparty " "  1.FF#1.party " " 1.cand_position "\makecell{ \\ \textbf{Listenplatz}}" 1.femalesinparty "\makecell{ \\ \textbf{Frauenanteil Parteiliste}}"scalometer "\makecell{ \\ \textbf{Parteivalenz}}" 1.party "\makecell{ \\ \textbf{Partei-Dummys}}", nolabel)

*_______________________________________________________________________________
********************************************************************************
* Abbildungen im Appendix
*_______________________________________________________________________________

********************************************************************************
* Abbildung A.1: Vorhergesagte Wahrscheinlichkeit einer Präferenz für offene Listen nach Parteien und Gleichstellungs-Salient
*______

* Daten laden & einschränken
use Daten/analysis, clear
keep if open_vote==1 & treatment==1 | open_vote==1 & treatment==2 // Alle Respondents ohne Policy Cues

* Logit Modell 9 (s. Tabelle A.2) berechnen
est clear
eststo: logit prefered_list i.salience_genderequality##ib3.party_closed i.treatment

* Vorhergesagte Wahrscheinlichkeit einer Präferenz für offene Listen über Parteien-Wahl und Gleichstellungs-Salienz berechnen
margins, over(party_closed salience_genderequality)

* Ergebnisse plotten
mplotoffset, ///
offset(0.2) plotopts(connect(none)) ///
yline(.5, lcolor(gs7) lwidth(medium) lpattern(dash)) ///
title("") xtitle("") ytitle("Präferenz für offene Liste") ///
legend(order(3 "Nicht Salient" 4 "Salient") title("Gleichstellung von Frauen", size(medlarge)))

* Plot bearbeiten
*** Marker und KIs "Nicht Salient"
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(fillcolor(gs16)) editcopy
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color(gs7))) editcopy
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(linestyle(color(gs7))) editcopy
*** Marker und KIs "Salient"
gr_edit .plotregion1.plot2.style.editstyle area(linestyle(color(gs5))) editcopy
gr_edit .legend.plotregion1.key[2].view.style.editstyle marker(fillcolor(gs5)) editcopy
gr_edit .legend.plotregion1.key[2].view.style.editstyle marker(linestyle(color(gs5))) editcopy

*Speichern 
graph export Abbildungen/Abb_A1.eps, replace

********************************************************************************
* Abbildung A.4: Vorhergesagte Wahrscheinlichkeit einer Präferenz für offene Listen nach Parteien und Wähler*innen Geschlecht
*______

* Daten laden & einschränken
use Daten/analysis, clear
keep if open_vote==1 & treatment==1 | open_vote==1 & treatment==2 // Alle Respondents ohne Policy Cues

* Logit Modell 8 (s. Tabelle A.2) berechnen
est clear
eststo: logit prefered_list i.sex##ib3.party_closed i.treatment

* Vorhergesagte Wahrscheinlichkeit einer Präferenz für offene Listen über Parteien-Wahl und Geschlecht berechnen
margins, over(party_closed sex)

* Ergebnisse plotten
mplotoffset, ///
offset(0.2) plotopts(connect(none)) ///
title("") xtitle("") ytitle("Präferenz für offene Liste") ///
legend(title("Geschlecht Wähler*innen", size(medlarge))) ///
yline(.5, lcolor(gs7) lwidth(medium) lpattern(dash)) 

* Plot bearbeiten
*** Marker und KIs Wähler
gr_edit .plotregion1.plot1.style.editstyle area(linestyle(color("0 0 225*2"))) editcopy
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(fillcolor("0 0 225*2")) editcopy
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(linestyle(color("0 0 225*2"))) editcopy
*** Marker und KIs Wählerinnen
gr_edit .plotregion1.plot2.style.editstyle area(linestyle(color("255 0 0*2"))) editcopy
gr_edit .legend.plotregion1.key[2].view.style.editstyle marker(fillcolor("255 0 0*2")) editcopy
gr_edit .legend.plotregion1.key[2].view.style.editstyle marker(linestyle(color("255 0 0*2"))) editcopy

*Speichern
graph export Abbildungen/Abb_A4.eps, replace

********************************************************************************
* Abbildung A.5: Logit-Koeffizienten des Kandidat*innengeschlechts
*______ 

import excel using Daten/linearkombinationen.xlsx, clear firstrow

/* Der Teil der Linearkombinations-Daten, der für diese Abbildung genutzt wird stammt von folgendem Code und wurde per Hand in Excel übertragen:

* Daten laden
use Daten/analysis, clear

* Modell 1 aus Tabelle 2 rechnen 
est clear 
eststo: clogit open_vote ib0.sex_cand i.FF ib3.party ib4.cand_position ib2.femalesinparty scalometer if treatment==2, group(voter) vce(cluster voter) // M1

* Linearkombinationen der Logit-Koeffizienten nach Wähler*innen- und Kandidierenden-Geschlecht berechnen:
*** mit 95 % Konfidenzintervallen
lincom 1.sex_cand
lincom 1.sex_cand + 1.FF
*** mit 90 % Konfidenzintervallen
lincom 1.sex_cand, level(90)
lincom 1.sex_cand + 1.FF, level(90)

**********
**********

* Modell 2 aus Tabelle 2 rechnen 
est clear
eststo: clogit open_vote ib0.sex_cand##ib3.party ib4.cand_position ib2.femalesinparty scalometer if treatment==2, group(voter) vce(cluster voter) // M2

* Linearkombinationen der Logit-Koeffizienten nach Wähler*innen- und Kandidierenden-Geschlecht berechnen:
*** mit 95 % Konfidenzintervallen
foreach x in 1 2 3 4 5 6 {
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.party
}
*** mit 90 % Konfidenzintervallen
foreach x in 1 2 3 4 5 6 {
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.party, level(90)
}

**********
**********

* Modell 3 aus Tabelle 2 rechnen 
est clear
eststo: clogit open_vote ib0.sex_cand i.SF ib3.party ib4.cand_position ib2.femalesinparty scalometer if treatment==2, group(voter) vce(cluster voter) // M3

* Linearkombinationen der Logit-Koeffizienten nach Wähler*innen- und Kandidierenden-Geschlecht berechnen:
*** mit 95 % Konfidenzintervallen
lincom 1.sex_cand 
lincom 1.sex_cand + 1.SF
*** mit 90 % Konfidenzintervallen
lincom 1.sex_cand, level(90) 
lincom 1.sex_cand + 1.SF, level(90)

**********
**********

* Modell 4 aus Tabelle 2 rechnen 
est clear
eststo: clogit open_vote ib0.sex_cand##ib2.femalesinparty ib3.party ib4.cand_position scalometer if treatment==2, group(voter) vce(cluster voter) // M4

* Linearkombinationen der Logit-Koeffizienten nach Wähler*innen- und Kandidierenden-Geschlecht berechnen:
*** mit 95 % Konfidenzintervallen
foreach x in 1 2 3 {
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.femalesinparty
}
*** mit 90 % Konfidenzintervallen
foreach x in 1 2 3 {
eststo: lincom 1.sex_cand + 1.sex_cand#`x'.femalesinparty, level(90)
}
*/

* Daten auf Linearkombinationen aus Modellen 1-4 beschränken
drop if model==5

* Variable erzeugen, um Daten auf X-Achse zu plotten
gen x = model- 0.5 
replace x = x - 0.1 if sex == "Male" | interaction=="Non-Salient"
replace x = x + 0.1 if sex == "Female" | interaction == "Salient"
replace x = x - 0.2 if interaction == "1 Female"
replace x = x + 0.2 if interaction == "3 Female"
replace x = x - 0.3 if party == "left"
replace x = x - 0.18 if party == "green"
replace x = x - 0.06 if party == "spd"
replace x = x + 0.06 if party == "union"
replace x = x + 0.18 if party == "fdp"
replace x = x + 0.3 if party == "afd"

* Plot erstellen
twoway (scatter x coef)  ///
(rcap upper lower x, horizontal) ///
(rbar upper90 lower90 x, bcolor(black) barwidth(0.025) horizontal), ///
ylabel(0.2 " " .4 "Wähler" .6 "Wählerin" 1 "Modell 1:" 1.2 "Linke" 1.32 "B'90/Grünen" ///
1.44 "SPD" 1.56 "Union" 1.68 "FDP" 1.8 "AfD" 2 "Modell 2:" 2.4 "Nicht Salient" ///
2.6 "Salient" 3 "Modell 3:" 3.3 "1/4 Frauen" 3.5 "2/4 Frauen" 3.7 "2/4 Frauen" ///
4 "Modell 4:", nogrid noticks labsize(small)) ///
yline(1, lcolor(gs10) lwidth(0.1)) ///
yline(2, lcolor(gs10) lwidth(0.1)) ///
yline(3, lcolor(gs10) lwidth(0.1)) ///
yline(4, lcolor(gs10) lwidth(0.1)) ///
xline(0, lcolor(gs7) lpattern(dash)) ///
ytitle("") legend(off) xtitle("Logit-Koeffizient Kandidat*innen-Geschlecht")

* Plot bearbeiten
*** Marker
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(size(small)) editcopy
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(fillcolor(gs1)) editcopy
gr_edit .legend.plotregion1.key[1].view.style.editstyle marker(linestyle(color(gs1))) editcopy
*** KIs
gr_edit .plotregion1.plot2.style.editstyle area(linestyle(color(gs1))) editcopy

* Speichern 
graph export Abbildungen/Abb_A5.eps, replace

********************************************************************************
* Abbildung A.6: Post Hoc Power-Analyse für Abb.2
*______ 

* Power-Plot erstellen
power oneproportion 0.5, test(wald) n(673 647) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power))
 
* Plot bearbeiten
graph play Daten/edit/Abb_A6.grec

* Speichern
graph export Abbildungen/Abb_A6.eps, replace

********************************************************************************
* Abbildung A.7: Post Hoc Power-Analyse für Abb.3
*______

* Empty Memory Graphy
graph drop _all

* Power-Plot für Linke erstellen
power oneproportion 0.5, test(wald) n(93 101 194) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power) name(linke, replace)) 
* Plot bearbeiten
graph play Daten/edit/Abb_A7_1.grec
***
* Power-Plot für Grünen
power oneproportion 0.5, test(wald) n(90 141 231) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power) name(grüne, replace)) 
* Plot bearbeiten
graph play Daten/edit/Abb_A7_2.grec
***
* Power-Plot für SPD erstellen
power oneproportion 0.5, test(wald) n(117 133 250) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power) name(spd, replace)) 
* Plot bearbeiten
graph play Daten/edit/Abb_A7_3.grec
***
* Power-Plot für Union erstellen
power oneproportion 0.5, test(wald) n(124 152 276) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power) name(union, replace)) 
* Plot bearbeiten
graph play Daten/edit/Abb_A7_4.grec
***
* Power-Plot für FDP erstellen
power oneproportion 0.5, test(wald) n(47 72 119) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power) name(fdp, replace)) 
* Plot bearbeiten
graph play Daten/edit/Abb_A7_5.grec
***
* Power-Plot für AFD erstellen
power oneproportion 0.5, test(wald) n(102 148 250) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power) name(afd, replace)) 
* Plot bearbeiten
graph play Daten/edit/Abb_A7_6.grec

* Alle Partei-Plots zusammenführen
grc1leg linke grüne spd union fdp afd, cols(2) imargin(0 5 0 0) ///
legendfrom(linke)

* Kombinierten Plot bearbeiten
graph play Daten/edit/Abb_A7_gesamt.grec

* Final Speichern
graph export Abbildungen/Abb_A7.eps, replace

********************************************************************************
* Abbildung A.8: Post Hoc Power-Analyse für Abb.4
*______

* Empty Memory Graphy
graph drop _all

* Power-Plot für Frauenanteil von 1/4 erstellen
power oneproportion 0.25, test(wald) n(288) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power) name(eine, replace)) 
* Plot bearbeiten
graph play Daten/edit/Abb_A8_1.grec
***
* Power-Plot für Frauenanteil von 2/4 erstellen
power oneproportion 0.5, test(wald) n(721) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power) name(zwei, replace))
* Plot bearbeiten
graph play Daten/edit/Abb_A8_2.grec
***
* Power-Plot für Frauenanteil von 3/4 erstellen
power oneproportion 0.75, test(wald) n(311) alpha(0.05 0.10) power(0.2(0.1)0.9) graph(ydimension(delta) xdimension(power) name(drei, replace))
* Plot bearbeiten
graph play Daten/edit/Abb_A8_3.grec

* Alle Frauenanteil-Plots zusammenführen
grc1leg eine zwei drei, ///
cols(1) legendfrom(drei)

* Kombinierten Plot bearbeiten
gr_edit .style.editstyle declared_ysize(8) editcopy

* Final Speichern
graph export Abbildungen/Abb_A8.eps, replace

*_______________________________________________________________________________
********************************************************************************
* Tabellen im Appendix
*_______________________________________________________________________________

********************************************************************************
* Tabelle A.1: Wahlwahrscheinlichkeit Parteien in geschlossener Liste
*______

* Daten laden
use Daten/analysis, clear

* Labels speichern vor Collapse-Befehl
foreach v of var * {
        local l`v' : variable label `v'
            if `"`l`v''"' == "" {
            local l`v' "`v'"
        }
}

* Daten so zusammenfassen, dass das Conditional Logit nicht auf Kandidierenden-Ebene, sondern Parteien-Ebene gerechnet werden kann
collapse sex-party_position FF-treatment, by(voter party)

* Gespeicherte Labels wieder einfügen 
foreach v of var * {
        label var `v' "`l`v''"
}

* Conditional Logit Modelle M6 & M7 berechnen (Daten hier auf Befragte beschränkt, die zuerst die geschlossene Liste ohne Policy Cues vorgelegt bekommen haben)
est clear

eststo: clogit closed_vote i.sex##ib2.femalesinparty scalometer ib3.party ///
if (treatment==1), group(voter) vce(cluster voter)

eststo: clogit closed_vote i.salience_genderequality##ib2.femalesinparty scalometer ib3.party ///
if (treatment==1), group(voter) vce(cluster voter)


* Value-Labels für Tabelle anpassen (ergeben nur in dieser Tabelle Sinn)
lab val salience_genderequality eq
lab val femalesinparty frauenanteil
lab val sex sex

* Gespeicherte Berechnungen als Tabelle exportieren
esttab using "Tabellen/Tab_A1.tex", replace se mtitles("Modell 6" "Modell 7") eqlabel(none) label nonotes wide nonumber ///
stats(N N_clust r2_p, labels("N" "Befragte" "Pseudo R$^2$")) ///
dropped("(Ref.)") ///
drop(0.sex 1.sex 0.sex#1.femalesinparty 0.sex#2.femalesinparty 0.sex#3.femalesinparty 0.salience_genderequality 1.salience_genderequality 0.salience_genderequality#1.femalesinparty 0.salience_genderequality#2.femalesinparty 0.salience_genderequality#3.femalesinparty) ///
order(1.femalesinparty 2.femalesinparty 3.femalesinparty 1.sex#1.femalesinparty 1.sex#2.femalesinparty 1.sex#3.femalesinparty 1.salience_genderequality#1.femalesinparty 1.salience_genderequality#2.femalesinparty 1.salience_genderequality#3.femalesinparty scalometer 1.party) ///
refcat(1.femalesinparty "\textbf{Frauenanteil auf Parteiliste}" 1.sex#1.femalesinparty " \makecell{ \\ \textbf{Interaktionsterme}}"1.salience_genderequality#1.femalesinparty " " scalometer "\makecell{ \\ \textbf{Parteivalenz}}" 1.party "\makecell{ \\  \textbf{Partei-Dummys}}", nolabel)

********************************************************************************
* Tabelle A.2: Bevorzugter Listentyp
*______

* Daten laden & einschränken
use Daten/analysis, clear
keep if open_vote==1 & treatment==1 | open_vote==1 & treatment==2 // Alle Respondents ohne Policy Cues

* Logit Modelle M8 & M9 berechnen
est clear

eststo: logit prefered_list i.sex##ib3.party_closed i.treatment
eststo: logit prefered_list i.salience_genderequality##ib3.party_closed i.treatment


* Gespeicherte Berechnungen als Tabelle exportieren 
esttab using "Tabellen/Tab_A2.tex", replace se label nonotes eqlabel(none) wide nonumber  ///
stats(N r2_p, labels("N" "Pseudo R$^2"))  varlabels (_cons Konstante) ///
mtitles("Modell 8" "Modell 9") ///
dropped("(Ref.)") ///
drop(0.sex#1.party_closed 0.sex#2.party_closed 0.sex#3.party_closed 0.sex#4.party_closed 0.sex#5.party_closed 0.sex#6.party_closed 0.salience_genderequality#1.party_closed 0.salience_genderequality#2.party_closed 0.salience_genderequality#3.party_closed 0.salience_genderequality#4.party_closed 0.salience_genderequality#5.party_closed 0.salience_genderequality#6.party_closed) ///
order(1.sex 0.sex 1.sex#1.party_closed 1.sex#2.party_closed 1.sex#3.party_closed 1.sex#4.party_closed 1.sex#5.party_closed 1.sex#6.party_closed 1.salience_genderequality 0.salience_genderequality 1.salience_genderequality#1.party_closed 1.salience_genderequality#2.party_closed 1.salience_genderequality#3.party_closed 1.salience_genderequality#4.party_closed 1.salience_genderequality#5.party_closed 1.salience_genderequality#6.party_closed 1.party_closed 2.party_closed 3.party_closed 4.party_closed 5.party_closed 6.party_closed 2.treatment 1.treatment) ///
refcat( 1.sex "\textbf{Wähler*innen-Geschlecht}" 1.sex#1.party "\makecell{ \\ \textbf{Partei-Interaktionen}}" 1.salience_genderequality "\makecell{ \\ \textbf{Gleichstellungs-Salienz}}" 1.salience_genderequality#1.party "\makecell{ \\ \textbf{Partei-Interaktionen}}" 1.party_closed "\makecell{ \\ \textbf{Partei-Dummys}}" 2.treatment "\makecell{ \\ \textbf{Treatment}}" _cons " ", nolabel)

********************************************************************************
********************************************************************************
* ENDE
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
